Описание
Объект QueryDef представляет сохраненное определение
запроса в базе данных Microsoft Jet или временное определение запроса в
рабочей области ODBCDirect.
Замечания
Объект QueryDef используют для определения запроса.
Например, данный объект позволяет:
1. С помощью свойства SQL задать
или возвратить определение запроса.
2. Задать или возвратить параметры
запроса с помощью семейства Parameters объекта QueryDef.
3. С
помощью свойства Type возвратить значение, показывающее, выполняется ли в
запросе выборка записей из существующей таблицы, создание новой таблицы, вставка
записей из одной таблицы в другую, удаление записей или обновление
записей.
4. С помощью свойства MaxRecords ограничить количество
записей, возвращаемых в запросе.
5. С помощью свойства ODBCTimeout
указать интервал ожидания для возвращения записей. Свойство ODBCTimeout
применимо к любым запросам, в которых осуществляется доступ к данным
ODBC.
В рабочей области Microsoft Jet пользователь также имеет
возможность:
1. С помощью свойства ReturnsRecords указать возвращение
записей в запрос. Свойство ReturnsRecords определено только для запросов
к серверу SQL.
2. Использовать свойство Connect для создания
запроса к серверу SQL, выполняющего запрос к базе данных ODC.
В
рабочей области ODBCDirect пользователь также имеет возможность:
1. С
помощью свойства Prepare определить, следует ли вызывать программный
интерфейс (API) ODBC SQLPrepare при выполнении запроса.
2. С
помощью свойства CacheSize определить временный буфер, в который
помещаются записи, возвращаемые запросом.
Кроме того, имеется возможность
создания временных объектов QueryDef. В отличие от постоянных объектов
QueryDef, временные объекты QueryDef не сохраняются на диске и не
добавляются в семейство QueryDefs. Временные объекты QueryDef
полезны в запросах, которые повторно запускаются во время выполнения, но не
требуются в сохраненном виде, в особенности, если их инструкции SQL
создаются во время выполнения.
Постоянный объект QueryDef в рабочей
области Microsoft Jet фактически является откомпилированной инструкцией
SQL. Запросы с помощью постоянных объектов QueryDef выполняются
существенно быстрее, чем при запуске эквивалентной инструкции SQL в
методе OpenRecordset, поскольку при этом ядро базы данных Microsoft
Jet не должно компилировать запрос перед его запуском.
Рекомендуется при
доступе к внешней базе данных ядро Microsoft Jet использовать в объектах
QueryDef версию языка SQL, используемую внешней базой данных.
Например, можно создать запрос к серверу Microsoft SQL Server и сохранить
его в объекте QueryDef. При необходимости использовать запрос SQL,
предназначенный для ядра базы данных, отличного от Microsoft Jet, следует
задать строку свойства Connect, указывающую внешний источник данных.
Запрос с допустимым значением свойства Connect передается для обработки
непосредственно на сервер внешней базы данных в обход ядра Microsoft
Jet.
Для создания нового объекта QueryDef следует использовать
метод CreateQueryDef. Если в рабочей области Microsoft Jet указать
строку для аргумента имя или явно задать в свойстве Name нового объекта
QueryDef строку, не являющуюся пустой строкой, будет создан постоянный
объект QueryDef, который будет автоматически добавлен в семейство
QueryDefs и сохранен на диске. Если задать пустую строку в аргументе имя
или в свойстве Name, будет создан временный объект QueryDef.
В
рабочей области ODBCDirect объект QueryDef всегда является
временным. Все открытые объекты QueryDef содержатся в семействе
QueryDefs. Закрытие объекта QueryDef приводит к его
автоматическому удалению из семейства QueryDefs.
При ссылках на объект
QueryDef используют его порядковый номер в семействе или значение
свойства Name (имя):
QueryDefs(0) QueryDefs("имя") QueryDefs![имя]
Для ссылок на временные объекты QueryDef могут использоваться только объектные переменные, которым были присвоены эти объекты.